package projectisd.client;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
/** 
 * Dit is de klas die de functies uit InschrijvenVak die de functies Async maakt en functies aanmaakt
 * om de array list te updaten, verwijderen en iets aan toe te voegen daaraan.
 * @author Team 2
 * @version 7.0
 */
public class InschrijvenVakDelegate {
    private ProjectServiceAsync projectService = GWT.create(ProjectService.class);
    InschrijvenVakGUI gui;
    
void listInschrijvenVakken() {
    	
	// verzamel de aanwezige vakken voor de gui
	projectService.listVakken(new AsyncCallback<List<Vak>> () {
                public void onFailure(Throwable caught) {
                	List<Vak> result = null;
                	gui.service_vakkenListRetrievedFromService(result);
                }
    
                public void onSuccess(List<Vak> result) {
                    gui.service_vakkenListRetrievedFromService(result);
                }
    }//end of inner class
    );//end of listLeraren method call.    	
	
   	projectService.listInschrijvenVakken(new AsyncCallback<List<InschrijvenVak>> () {
                public void onFailure(Throwable caught) {
                    gui.service_eventListInschrijvenVakkenFailed(caught);
                }
    
                public void onSuccess(List<InschrijvenVak> result) {
                    gui.service_eventListRetrievedFromService(result);
                    
                }
    }//end of inner class
    );//end of listLes method call.
}
    
    void addInschrijvenVak(final InschrijvenVak inschrijvenVak) {
    	projectService.addInschrijvenVak(inschrijvenVak, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventAddInschrijvenVakFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventAddInschrijvenVakSuccessful();
            }
        }//end of inner class
        );//end of addInschrijvenVak method call.        
    }

    void updateInschrijvenVak(final InschrijvenVak inschrijvenVak) {
    	projectService.updateInschrijvenVak(inschrijvenVak, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventUpdateInschrijvenVakFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventUpdateSuccessful();
            }
        }//end of inner class
        );//end of updateInschrijvenVak method call.        
    }

    void removeInschrijvenVak(final InschrijvenVak inschrijvenVak) {
    	projectService.removeInschrijvenVak(inschrijvenVak, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventRemoveInschrijvenVakFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventRemoveInschrijvenVakSuccessful();
            }
        }//end of inner class
        );//end of updateInschrijvenVak method call.        
    }
    
}
